Virtual computing environments allow multiple virtual machines (VMs) to run on a single physical platform and to share physical resources (e.g., hardware) of the physical platform. VMs may be based on specifications of a hypothetical computer or emulate the computer architecture and functions of a real world computer. A typical physical platform or server, also referred to as a host computer or host, in which VMs are instantiated includes central processing units (CPUs), random access memory (RAM), network interface cards (NICs), and host bus adapters (HBAs) for storage access. Larger servers bring economies of scale to virtualized datacenters, where tens to hundreds of VMs are packed on a single server, to lower cost and increase utilization.
A hypervisor and virtual machine monitors (VMMs) implemented within the hypervisor supports the execution of VMs. The hypervisor controls sharing of the physical resources between VMs. To manage CPU resources and memory resources, schedulers in hypervisors may implement some form of weight based allocation to give priority to latency sensitive VMs. Unfortunately, techniques for managing CPU resources and memory resources are not directly applicable to scheduling of the network bandwidth available through the NICs.
Instead, a conventional packet scheduler of a hypervisor, which is implemented to manage scheduling of the network bandwidth, may follow a Quality of Service (QoS) model that specifies a guaranteed throughput for each VM. By using the QoS model, the hypervisor attempts to provide a guarantee that latency will not exceed a specified level for a particular VM or VMs. In some examples, traffic shapers may be used to enforce limits and/or weight-based allocation. When weight-based allocation is employed, network bandwidth can be provided according to the guarantee so long as the available network bandwidth remains high or constant. In situations where the available network bandwidth is low or fluctuates, the weights may need to be adjusted in order for the guarantee to be met.
Conventional packet schedulers have been sufficient mainly because networks were usually over-provisioned and physical NIC saturation at servers were not common. However, that trend has been changing rapidly due to several reasons. First, consolidation ratios per server have increased due to higher server processing core counts and larger memory sizes. It has been observed that two processing cores can easily saturate a 10-gigabit per second (Gbps) NIC using a packet size of 1 kilobyte (KB) or higher. Second, in situations where storage is accessed through the NIC such as in network-attached storage (NAS) systems, storage performance has increased due to improved solid-state drives (SSDs). With the adoption of SSDs in storage arrays, input-output operations per second (IOPS) are no longer limited by poor random I/O performance of disks and high hit rates (≧95%) in SSD tiers have resulted in a significant increase in bandwidth consumption of the NIC. Third, management traffic is consuming significant bandwidth in virtual environments when carrying out management applications such as live migration of VMs and virtual disks. Fourth, converged storage architectures are becoming common, where local storage across servers is stitched together to provide a shared storage device that is made accessible through the NIC.
Accordingly, increased consumption of physical resources that are available over a network has caused a need to provide better packet scheduling at physical NICs on host computers.